
#include "test_list.h"

#ifdef TEST_SUPPORT_SSTREAM

#include <den/meta/support_sstream.h>
#include <string>

#define TEST_CASE_NAME Den
#define TEST_NUMBER(n) support_sstream##_##n


#define TEST_SUPPORT_SSTREAM_000
#define TEST_SUPPORT_SSTREAM_001
#define TEST_SUPPORT_SSTREAM_002
#define TEST_SUPPORT_SSTREAM_003
#define TEST_SUPPORT_SSTREAM_004
#define TEST_SUPPORT_SSTREAM_005
#define TEST_SUPPORT_SSTREAM_006
#define TEST_SUPPORT_SSTREAM_007
#define TEST_SUPPORT_SSTREAM_008
#define TEST_SUPPORT_SSTREAM_009
#define TEST_SUPPORT_SSTREAM_010
#define TEST_SUPPORT_SSTREAM_011
#define TEST_SUPPORT_SSTREAM_012
#define TEST_SUPPORT_SSTREAM_013
#define TEST_SUPPORT_SSTREAM_014
#define TEST_SUPPORT_SSTREAM_015
#define TEST_SUPPORT_SSTREAM_016
#define TEST_SUPPORT_SSTREAM_017
#define TEST_SUPPORT_SSTREAM_018
#define TEST_SUPPORT_SSTREAM_019
#define TEST_SUPPORT_SSTREAM_020
#define TEST_SUPPORT_SSTREAM_021
#define TEST_SUPPORT_SSTREAM_022
#define TEST_SUPPORT_SSTREAM_023
#define TEST_SUPPORT_SSTREAM_024
#define TEST_SUPPORT_SSTREAM_025
#define TEST_SUPPORT_SSTREAM_026
#define TEST_SUPPORT_SSTREAM_027
#define TEST_SUPPORT_SSTREAM_028
#define TEST_SUPPORT_SSTREAM_029
#define TEST_SUPPORT_SSTREAM_030
#define TEST_SUPPORT_SSTREAM_031
#define TEST_SUPPORT_SSTREAM_032

//------------------------------------------------------------------------------------------------------//

namespace{

    struct s1ome{};
    struct rabbit{};

    ::std::ostream& operator<< (::std::stringstream& ss, const rabbit&) { return ss; }

    struct rabbit1
    {
        template<class T> friend T&
               operator<<(T& os, const rabbit1&){ return os; }
    };

}//namespace

//------------------------------------------------------------------------------------------------------//

#ifdef TEST_SUPPORT_SSTREAM_000
TEST(TEST_CASE_NAME, TEST_NUMBER(000))
{
    EXPECT_EQ(1, support_sstream<int>::value   );
    EXPECT_EQ(1, support_sstream<float>::value );
    EXPECT_EQ(1, support_sstream<::std::string>::value );

    EXPECT_EQ(0, support_sstream<s1ome>::value   );
    EXPECT_EQ(1, support_sstream<rabbit>::value  );
    EXPECT_EQ(1, support_sstream<rabbit1>::value );

}
#endif // TEST_SUPPORT_SSTREAM_000

#ifdef TEST_SUPPORT_SSTREAM_001
TEST(TEST_CASE_NAME, TEST_NUMBER(001))
{
}
#endif // TEST_SUPPORT_SSTREAM_001

#ifdef TEST_SUPPORT_SSTREAM_002
#endif // TEST_SUPPORT_SSTREAM_002

#ifdef TEST_SUPPORT_SSTREAM_003
#endif // TEST_SUPPORT_SSTREAM_003

#ifdef TEST_SUPPORT_SSTREAM_004
#endif // TEST_SUPPORT_SSTREAM_004

#ifdef TEST_SUPPORT_SSTREAM_005
#endif // TEST_SUPPORT_SSTREAM_005

#ifdef TEST_SUPPORT_SSTREAM_006
#endif // TEST_SUPPORT_SSTREAM_006

#ifdef TEST_SUPPORT_SSTREAM_007
#endif // TEST_SUPPORT_SSTREAM_007

#ifdef TEST_SUPPORT_SSTREAM_008
#endif // TEST_SUPPORT_SSTREAM_008

#ifdef TEST_SUPPORT_SSTREAM_009
#endif // TEST_SUPPORT_SSTREAM_009

#ifdef TEST_SUPPORT_SSTREAM_010
#endif // TEST_SUPPORT_SSTREAM_010

#ifdef TEST_SUPPORT_SSTREAM_011
#endif // TEST_SUPPORT_SSTREAM_011

#ifdef TEST_SUPPORT_SSTREAM_012
#endif // TEST_SUPPORT_SSTREAM_012

#ifdef TEST_SUPPORT_SSTREAM_013
#endif // TEST_SUPPORT_SSTREAM_013

#ifdef TEST_SUPPORT_SSTREAM_014
#endif // TEST_SUPPORT_SSTREAM_014

#ifdef TEST_SUPPORT_SSTREAM_015
#endif // TEST_SUPPORT_SSTREAM_015

#ifdef TEST_SUPPORT_SSTREAM_016
#endif // TEST_SUPPORT_SSTREAM_016

#ifdef TEST_SUPPORT_SSTREAM_017
#endif // TEST_SUPPORT_SSTREAM_017

#ifdef TEST_SUPPORT_SSTREAM_018
#endif // TEST_SUPPORT_SSTREAM_018

#ifdef TEST_SUPPORT_SSTREAM_019
#endif // TEST_SUPPORT_SSTREAM_019

#ifdef TEST_SUPPORT_SSTREAM_020
#endif // TEST_SUPPORT_SSTREAM_020

#ifdef TEST_SUPPORT_SSTREAM_021
#endif // TEST_SUPPORT_SSTREAM_021

#ifdef TEST_SUPPORT_SSTREAM_022
#endif // TEST_SUPPORT_SSTREAM_022

#ifdef TEST_SUPPORT_SSTREAM_023
#endif // TEST_SUPPORT_SSTREAM_023

#ifdef TEST_SUPPORT_SSTREAM_024
#endif // TEST_SUPPORT_SSTREAM_024

#ifdef TEST_SUPPORT_SSTREAM_025
#endif // TEST_SUPPORT_SSTREAM_025

#ifdef TEST_SUPPORT_SSTREAM_026
#endif // TEST_SUPPORT_SSTREAM_026

#ifdef TEST_SUPPORT_SSTREAM_027
#endif // TEST_SUPPORT_SSTREAM_027

#ifdef TEST_SUPPORT_SSTREAM_028
#endif // TEST_SUPPORT_SSTREAM_028

#ifdef TEST_SUPPORT_SSTREAM_029
#endif // TEST_SUPPORT_SSTREAM_029

#ifdef TEST_SUPPORT_SSTREAM_030
#endif // TEST_SUPPORT_SSTREAM_030

#ifdef TEST_SUPPORT_SSTREAM_031
#endif // TEST_SUPPORT_SSTREAM_031

#ifdef TEST_SUPPORT_SSTREAM_032
#endif // TEST_SUPPORT_SSTREAM_032





#endif //TEST_SUPPORT_SSTREAM



